package br.unifor.ads.desphouse.costumer;

import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.table.DefaultTableModel;

/**
 * JTable padrao para o sistema
 * 
 * @author Alex Girao
 */
public class JTableAdapter extends JTable {

	private static final long serialVersionUID = -4459521251792068635L;
	
	public static final Integer LARGURA_PADRAO = 470;
	public static final Integer ALTURA_PADRAO = 380;
	
	public JTableAdapter() {
		super();
	}
	
	public JTableAdapter(String[] colunas,int x, int y, int width, int height) {
		super();
		setBounds(x, y, width, height);
		configurar(colunas);
	}
	
	/**
	 * Aplica as alterações padrão na table
	 */
	public void configurar(String[] colunas){
		setModel(
			new DefaultTableModel(new Object [][] { },colunas){
				private static final long serialVersionUID = -1412182123692895512L;
				//impedir que as colunas sejam editaveis
				@Override
				public boolean isCellEditable(int row, int column) {
					return false;
				}
			}
		);
		//se se auto redimensionar
		setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
		//aplica o tamanho padrao das telas
		setSize(LARGURA_PADRAO, ALTURA_PADRAO);
		//quando um registro é clicka, toda a sua linha é selecionada
		setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
	}
	
	/**
	 * Remove todas as linhas da tabela
	 */
	public void limparLinhas(){
		//pega o DefaultTableModel da tabela
		DefaultTableModel dtm = (DefaultTableModel) getModel();
		//limpando a tabela
		while(dtm.getRowCount()>0){
            dtm.removeRow(0);
        }
	}
	
	/**
	 * Adiciona uma nova linha com dados na tabela
	 * @param dadosRegistro
	 */
	public void adicionarLinha(Object[] dadosRegistro){
		getDefaultTableModel().addRow(dadosRegistro);
	}
	
	/**
	 * Retorna o DefaultTableModel da JTableAdapter
	 * @return
	 */
	public DefaultTableModel getDefaultTableModel(){
		return (DefaultTableModel) getModel();
	}
	
}
